/*
 * Creation : 22/03/2013
 */
package a2012c2.t6.chat.common;

import javax.swing.JTextPane;
import javax.swing.text.Document;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;

import a2012c2.t6.chat.client.IconFactory;

/**
 * TODO : Description
 * 
 * @author e397496
 * 
 */
public final class TextUtilities {

	private TextUtilities() {
	}

	/**
	 * @param text
	 * @param editor
	 */
	public static final synchronized void writeText(String text, JTextPane editor) {
		HTMLEditorKit kit = (HTMLEditorKit) editor.getEditorKit();
		try {
			kit.insertHTML((HTMLDocument) editor.getDocument(), editor.getDocument().getLength(), text, 0, 0, null);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * insertNewMessage Sabe escribir el mensaje en el Panel de escritura
	 * 
	 * @param editor
	 *            {@link JTextPane} donde se va a escribir
	 * @param message
	 *            {@link Mensaje} lo que se va a escribir
	 * @author dwajser
	 * */
	public final static void insertNewMessage(JTextPane editor, Mensaje message) {

		String nickHtml = "<font style=\"color: #0000FF\">" + message.getNick() + " dice: </font>";
		String messageHtml = getMessageHtml(message.getText());
		String html = nickHtml + messageHtml;
		writeText(html, editor);
	}

	/**
	 * insertNewMessage Sabe escribir el mensaje en el Panel de escritura
	 * 
	 * @param editor
	 *            {@link JTextPane} donde se va a escribir
	 * @param message
	 *            lo que se va a escribir
	 * @author dwajser
	 * */
	public final static void insertNewMessage(JTextPane editor, String message) {
		String messageHtml = getMessageHtml(message);
		writeText(messageHtml, editor);
	}

	private final static String getMessageHtml(String message) {
		StringBuilder htmlMessage = new StringBuilder();
		String[] words = message.split(" ");
		for (String word : words) {
			IconFactory factory = IconFactory.getInsatance();
			htmlMessage.append(factory.getIconToHtml(word));
		}
		return htmlMessage.toString();
	}

	/**
	 * @param editor
	 */
	public static final void clearText(JTextPane editor) {
		HTMLEditorKit editorKit = new HTMLEditorKit();
		Document document = editorKit.createDefaultDocument();
		editor.setDocument(document);
		editor.setEditorKit(editorKit);
	}
}
